Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

 << zurück
Visual C# 2005 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2005

Visual C# 2005
1.320 S., mit 2 CDs, 59,90 Euro
Galileo Computing
ISBN 3-89842-586-X
gp Kapitel 15 Grundlagen zum Erstellen einer Windows-Anwendung
  gp 15.1 Die Entwicklungsumgebung
  gp 15.2 Eine erste Windows-Anwendung
  gp 15.3 Das Codegerüst einer Windows-Anwendung
    gp 15.3.1 Die Datei »Program.cs«
    gp 15.3.2 Die Dateien »Form1.cs« und »Form1.Designer.cs«
  gp 15.4 Ereignisse grafischer Windows-Komponenten
    gp 15.4.1 Grundlegende Anmerkungen
    gp 15.4.2 Ereignisse mit Ereignisdaten
    gp 15.4.3 Ereignishandler mit dem Visual Studio 2005 bereitstellen
    gp 15.4.4 Ereignisbehandlung mit den »OnXxx«-Methoden
  gp 15.5 Die Basisklassen einer Form
    gp 15.5.1 Die Klasse »Control«
    gp 15.5.2 Die Klasse »ScrollableControl«
    gp 15.5.3 Die Klasse »ContainerControl«
  gp 15.6 Die Eigenschaften einer Form
    gp 15.6.1 Die Rahmendarstellung einer Form
    gp 15.6.2 Formspezifisches Symbol festlegen
    gp 15.6.3 Die Schaltflächen in der Titelleiste
    gp 15.6.4 Spielereien mit »Opacity« und »TransparencyKey«
    gp 15.6.5 Fenster, die nicht verdeckt werden können
    gp 15.6.6 Den Mauszeiger verändern
    gp 15.6.7 Farbeinstellungen mit dem Typ »Color«
    gp 15.6.8 Schriftart mit dem Typ »Font«
    gp 15.6.9 Die Abmessungen einer Form festlegen
    gp 15.6.10 Die Position eines Fensters
    gp 15.6.11 Der Anzeigezustand eines Fensters nach dem Öffnen
    gp 15.6.12 Die Arbeitsfläche des Fensters (der Clientbereich)
    gp 15.6.13 Die Auflistung »ControlsCollection«
    gp 15.6.14 Zusammenfassung der Eigenschaften des Form-Objekts
  gp 15.7 Ereignisse einer Form
    gp 15.7.1 Ereignisse beim Erzeugen eines Fenster
    gp 15.7.2 Größenänderung einer Form
    gp 15.7.3 Ereignisse beim Schließen eines Fensters
  gp 15.8 Anwendungen mit mehreren Fenstern
    gp 15.8.1 Neue Forms hinzufügen
    gp 15.8.2 Formulare laden, anzeigen, verstecken und schließen
    gp 15.8.3 Mehrere Fenster verwalten
    gp 15.8.4 Formulare in einem eigenen Thread laufen lassen
    gp 15.8.5 Splash-Fenster
  gp 15.9 Modale Dialogfenster
    gp 15.9.1 Layout eines Dialogfensters
    gp 15.9.2 Die Eigenschaft »DialogResult«
    gp 15.9.3 Eine Form modal öffnen
    gp 15.9.4 Die Weitergabe von Resultaten aus einem Dialog
    gp 15.9.5 Dialoge mit einer »Übernehmen«-Schaltfläche
    gp 15.9.6 Fokussierreihenfolge und Standardschaltflächen
  gp 15.10 Meldungsfenster mit »MessageBox«
    gp 15.10.1 Die Methode »MessageBox.Show«
    gp 15.10.2 Der Rückgabewert der Meldungsfenster
  gp 15.11 Das Speichern in der Registrierungsdatenbank
    gp 15.11.1 Die Klassen »Registry« und »RegistrKey«
    gp 15.11.2 Programmbeispiel zum Speichern in der Registrierung
  gp 15.12 Die Klasse »Application«
    gp 15.12.1 Die Datei »AssemblyInfo.cs«
    gp 15.12.2 Mit »Application.DoEvents« wartende Ereignisse abrufen
    gp 15.12.3 Zusammenfassung Eigenschaften und Methoden


Galileo Computing

15.10 Meldungsfenster mit »MessageBox«  downtop

Sicherlich sind Ihnen modale Dialoge wie der folgende geläufig:

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 15.18   Ein typisches modales Dialogfenster

Im vorherigen Abschnitt haben Sie erkannt, dass auch die Implementierung eines sehr einfachen Dialogfensters relativ viel Code und Zeit beansprucht. Weil modale Dialogfenster ähnlich wie das in Abbildung 15.18 sehr häufig zur einfachen Interaktion mit dem Anwender oder auch nur zur Bereitstellung von Information in Applikationen eingesetzt werden, ist im Namespace System.Windows.Forms eine Klasse vordefiniert, mit der die meisten Anforderungen erfüllt werden können. Es handelt sich um die Klasse MessageBox.

Der abgebildete Dialog beruht auf der folgenden Anweisung:


MessageBox.Show("Wollen Sie die Anwendung beenden?",
                "Anwendungsmeldung",
                MessageBoxButtons.YesNo,
                MessageBoxIcon.Question,
                MessageBoxDefaultButton.Button2);

Fast braucht man keine erklärenden Worte zu verlieren, denn der Code beschreibt sich nahezu von selbst: Im ersten Argument wird der Meldungstext übergeben, im zweiten die Beschriftung der Titelleiste, im dritten die anzuzeigenden Schaltflächen, das vierte Argument beschreibt das Symbol im Clientbereich des Meldungsfensters, und das fünfte und letzte Argument gibt vor, welche Schaltfläche nach dem Start der Anzeige fokussiert werden soll.

Der Programmcode, den man benötigt, um ein Meldungsfenster anzuzeigen, ist bedeutend kürzer und einfacher als der eines benutzerdefinierten Dialogs. Dennoch sind modalen Dialogen, die auf der Klasse MessageBox basieren, Grenzen gesetzt, denn der Anwender wird nur mit Hinweisen und Informationen versorgt, auf die er durch das Anklicken einer Schaltfläche reagiert, um damit den weiteren Programmablauf zu beeinflussen.


Galileo Computing

15.10.1 Die Methode »MessageBox.Show«  downtop

MessageBox verfügt nur über eine typspezifische Methode: Es ist die vielfach überladene statische Methode Show, die mit 20 Überladungen aufwartet. Die einfachste ist die, die nur die Zeichenfolge des Meldungstextes entgegennimmt:


MessageBox.Show("Visual C# macht Spass");

Nachfolgend sehen Sie die Ausgabe dieser Anweisung.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 15.19   Das denkbar einfachste Meldungsfenster

Klickt der Anwender auf den OK-Button, wird das Meldungsfenster geschlossen.

Optisch wirkt eine leere Titelleiste stümperhaft, deshalb werden Sie bestimmt in allen Fällen dieser auch eine Zeichenfolge übergeben wollen. Üblicherweise verwendet man dazu den Namen der Anwendung, den man auch aus der statischen Eigenschaft ProductName der Klasse Application beziehen kann:


MessageBox.Show("Visual C# macht Spass", Application.ProductName);

In einem dritten Argument können Sie die im Meldungsfenster angezeigten Schaltflächen festlegen. Dazu übergeben Sie eine der Enumeration MessageBoxButtons vordefinierten Konstanten (siehe Tabelle 15.13).


Tabelle 15.13   Konstanten der Enumeration »MessageBoxButtons«

Member Beschreibung
AbortRetryIgnore Das Meldungsfeld enthält die Schaltflächen Beenden, Wiederholen und Ignorieren.
OK Das Meldungsfeld enthält die OK-Schaltfläche.
OKCancel Das Meldungsfeld enthält die Schaltflächen OK und Abbrechen.
RetryCancel Das Meldungsfeld enthält die Schaltflächen Wiederholen und Abbrechen.
YesNo Das Meldungsfeld enthält die Schaltflächen Ja und Nein.
YesNoCancel Das Meldungsfeld enthält die Schaltflächen Ja, Nein und Abbrechen.

Wollen Sie im linken Bereich des Meldungsfensters ein Symbol anzeigen lassen, haben Sie tatsächlich nur vier verschiedene Alternativen, obwohl in der Liste der MessageBoxIcon-Aufzählung neun aufgeführt sind.


Tabelle 15.14   Konstanten der Enumeration »MessageBoxIcon«

Member Beschreibung
None Das Meldungsfenster enthält kein Symbol.
Hand, Stop, Error Das Meldungsfeld enthält ein Symbol, das aus einem weißen X in einem Kreis mit rotem Hintergrund besteht.
Question Das Meldungsfeld enthält ein Symbol, das aus einem Fragezeichen in einem Kreis besteht.
Exclamation, Warning Das Meldungsfeld enthält ein Symbol, das aus einem Ausrufezeichen in einem Dreieck mit gelbem Hintergrund besteht.
Asterisk, Information Das Meldungsfeld enthält ein Symbol, das aus dem Kleinbuchstaben »i« in einem Kreis besteht.

Erzeugen Sie ein Meldungsfenster mit mehreren Schaltflächen, kommt der Wahl der vorfokussierten Schaltfläche eine besondere Bedeutung zu. Nehmen wir beispielsweise das folgende Meldungsfenster:


MessageBox.Show("Wollen Sie die Anwendung beenden?",
Application.ProductName,
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);

Standardmäßig ist die linke Schaltfläche (OK) fokussiert und reagiert nicht nur auf einen Mausklick, sondern auch auf die Eingabe- und Leertaste. Es wäre fatal, wenn in einem Formular viele Einträge gemacht worden sind, der Anwender versehentlich auf die Schließen-Schaltfläche der Form klickt und dann in seiner Hektik danach noch zu schnell auf die (Enter)-Taste drückt – seine Arbeit wäre verloren. Sie als Entwickler sollten diese Situation vermeiden. Dazu fokussieren Sie einfach die Schaltfläche im Meldungsfenster, die nicht das Schließen der Form oder gar der Anwendung zur Folge hat. Der der Festlegung des Icons folgende Parameter der Show-Methode vom Typ MessageBoxDefaultButton eröffnet Ihnen diese Option.


Tabelle 15.15   Konstanten der Enumeration »MessageBoxDefaultButton«

Member Beschreibung
Button1 Die erste Schaltfläche im Meldungsfenster ist die vorfokussierte Schaltfläche.
Button2 Die zweite Schaltfläche von links im Meldungsfenster ist die vorfokussierte Schaltfläche.
Button3 Die rechte Schaltfläche im Meldungsfenster ist die vorfokussierte Schaltfläche.

Weitere optionale Parameter ermöglichen über die aufgeführten Fähigkeiten hinaus die Anzeige einer Hilfe-Schaltfläche und die Verknüpfung zu einer passenden Hilfedatei.


Galileo Computing

15.10.2 Der Rückgabewert der Meldungsfenster  toptop

Zeigt das Meldungsfenster nur einen OK-Button, erübrigt sich selbstverständlich die Auswertung dieser Schaltfläche. Werden jedoch mehrere Schaltflächen angeboten müssen, Sie auswerten, welche der Anwender angeklickt hat. Die Information, welche Schaltfläche des Meldungsfensters zum Schließen geführt hat, bezieht man über den Rückgabewert der Methode MessageBox.Show, der vom Typ DialogResult ist. Die Mitglieder dieser Enumeration sind schon in Tabelle 15.12 vorgestellt worden.

Im folgenden Ereignishandler einer Schaltfläche wird ein Meldungsfenster angezeigt, das den Anwender um Bestätigung nachsucht, ob er die Anwendung schließen möchte oder nicht. Der Code reagiert in Abhängigkeit von der im Meldungsfenster gewählten Schaltfläche.


private void btnSchliessen_Click(object sender, EventArgs e) {
  string strMeldung = "Wollen Sie die Anwendung beenden?";
  DialogResult result = MessageBox.Show(strMeldung,
      Application.ProductName,
      MessageBoxButtons.OKCancel,
      MessageBoxIcon.Question,
      MessageBoxDefaultButton.Button2);
  if(result == DialogResult.OK)
    Application.Exit();
  else
    // Reaktion auf 'Abbrechen', falls notwendig

Die Abbrechen-Schaltfläche wird vorfokussiert, um ein versehentliches Schließen der Anwendung zu vermeiden. In einer if-Anweisung wird der Rückgabewert überprüft. Hat der Anwender OK gedrückt, wird die Anwendung unweigerlich geschlossen, ansonsten kann eine andere Reaktion erfolgen. In den meisten Fällen ist bei der Rückgabe DialogResult.Cancel kein Code erforderlich.

Alternativ könnte der gesamte if-Block auch durch switch-case ersetzt werden:


switch(result) {
  case DialogResult.OK:
    Application.Exit();
    break;
  case DialogResult.Cancel:
    // Reaktion auf 'Abbrechen', falls notwendig
}

 << zurück
  
  Zum Katalog
Zum Katalog: Visual C# 2005
Visual C# 2005
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2005






 Fortgeschrittene
 Programmierung
 mit Visual C# 2005


Zum Katalog: Einstieg in Visual C# 2005






 Einstieg in
 Visual C# 2005


Zum Katalog: Einstieg in Visual Basic 2005






 Einstieg in
 Visual Basic 2005


Zum Katalog: Visual Basic 2005






 Visual Basic 2005


Zum Katalog: Java ist auch eine Insel






 Java ist auch eine
 Insel


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de